package com.ustcinfo.study.scala.r4.wangzhigang

import org.apache.spark.{SparkConf, SparkContext}

/**
  * @describe:
  * @author: wang.zhigang
  * @date: 2018/8/4
  */
object WordCount {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("wzg")  //local 本地运行 yarn 服务端运行
    val sparkContext = new SparkContext(sparkConf)  //加载spark上下文
    val txtRdd = sparkContext.textFile("src/main/resources/programmingGuide")  //加载需要分析文件

    txtRdd
      .filter(x => x.trim().length >0) //过滤掉空行
      .map(x => x.split(" "))   //对每一行以空格分隔字符串 成为数组
      .flatMap(x => x)                //对每一行形成的数组拓展为一个数组
      .map(x => (x,1))                //将数组里的每一个单词映射（k,v)的形式
      .reduceByKey(_ + _)               //统计映射后的结果
      .map(x => (x._2,x._1))            //将元组（k，v）的key和value调换一下
      .sortByKey(false)    //以key为关键字进行降序排序
      .take(10)                //取排序后的前10条
      .foreach(println)              //执行计划 打印结果
  }


}
